import ast


from 程序核心代码.mvvm重构.基础定义.基础模型.ast节点模型基类 import ast节点基础模型
from 程序核心代码.mvvm重构.基础定义.节点管理器.自动节点注册表 import 注册节点模型
import logging
logging.basicConfig(level=logging.WARNING, format='%(asctime)s - %(levelname)s - %(message)s')
日志记录器 = logging.getLogger(__name__)

@注册节点模型(ast.Constant)
class 常量节点模型(ast节点基础模型):


    def __init__(self,ast节点, 所属节点模型管理器,上级节点=None,节点位置=None):
        super().__init__(ast节点, 所属节点模型管理器,  "常量节点",节点位置=节点位置,上级节点=上级节点)
        self.调试模式 = False  # 调试模式开关
        # 设置日志等级
        if self.调试模式:
            日志记录器.setLevel(logging.DEBUG)
            日志记录器.debug(f"{self.__class__.__name__}调试模式已开启")
        else:
            日志记录器.setLevel(logging.ERROR)  # 只显示警告及以上级别的日志
        self.参数名 = "值："
        self.参数值 = self._解析_ast值(self._ast节点)
        self.参数值修改回调 = self.数据节点参数值修改
    def 参数值修改回函数(self, 新参数值):
        print(f"常量修改为{新参数值}")
    def 参数值初始函数(self):
        return self._解析_ast值(self._ast节点)
    def 数据节点参数值修改(self,新参数):
        节点=self._生成_ast值(新参数)
        if isinstance( 节点, ast.Constant):
            self._ast节点 = self._生成_ast值 (新参数)
            #已被修改通知图形项的参数值更新
        else:
            raise ValueError(f"输入的值 {新参数} 不能解析为 ast.Constant 节点模型")
    # def 创建独立节点(起始接口):
    #     起始接口.ast节点= ast.Expr(ast.Constant(value="默认值尽快修改"))
    #     孤立常量= ast.Expr( 起始接口.ast节点)
    #     起始接口.所属节点模型管理器._ast节点.append(孤立常量)
    #    #
    def _生成_ast值(self, 内容):
        """将字符串内容转换为 AST 节点模型"""
        try:
            # 解析为 Python AST 表达式
            表达式 = ast.parse(内容, mode="eval").body
            return 表达式
        except Exception as e:
            raise ValueError(f"无法解析表达式: {内容}, 错误: {e}")
    def _解析_ast值(self, 节点):
        """解析 AST 节点为可读字符串"""
        return ast.unparse(节点)

        #print(ast.dump(起始接口.所属节点模型管理器.ast结构树, annotate_fields=True, indent=4))



